<!doctype html>
<html class="no-js" lang="en" data-content_root="./">
  <head><meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width,initial-scale=1"/>
    <meta name="color-scheme" content="light dark"><meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="index" title="Index" href="genindex.html" /><link rel="search" title="Search" href="search.html" /><link rel="next" title="TikTokLive.events package" href="TikTokLive.events.html" /><link rel="prev" title="TikTokLive.client.web.routes package" href="TikTokLive.client.web.routes.html" />

    <!-- Generated with Sphinx 7.4.7 and Furo 2024.08.06 -->
        <title>TikTokLive.client.ws package - TikTokLive v6.6.5</title>
      <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=a746c00c" />
    <link rel="stylesheet" type="text/css" href="_static/styles/furo.css?v=354aac6f" />
    <link rel="stylesheet" type="text/css" href="_static/css/rtd_sphinx_search.min.css?v=e72958e9" />
    <link rel="stylesheet" type="text/css" href="_static/styles/furo-extensions.css?v=302659d7" />
    <link rel="stylesheet" type="text/css" href="_static/css/custom.css?v=ff85bd92" />
    
    


<style>
  body {
    --color-code-background: #f8f8f8;
  --color-code-foreground: black;
  
  }
  @media not print {
    body[data-theme="dark"] {
      --color-code-background: #202020;
  --color-code-foreground: #d0d0d0;
  --color-problematic: #80aeef;
  --sidebar-filter: invert(0.95);
  
    }
    @media (prefers-color-scheme: dark) {
      body:not([data-theme="light"]) {
        --color-code-background: #202020;
  --color-code-foreground: #d0d0d0;
  --color-problematic: #80aeef;
  --sidebar-filter: invert(0.95);
  
      }
    }
  }
</style></head>
  <body>
    
    <script>
      document.body.dataset.theme = localStorage.getItem("theme") || "auto";
    </script>
    

<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
  <symbol id="svg-toc" viewBox="0 0 24 24">
    <title>Contents</title>
    <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 1024 1024">
      <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM115.4 518.9L271.7 642c5.8 4.6 14.4.5 14.4-6.9V388.9c0-7.4-8.5-11.5-14.4-6.9L115.4 505.1a8.74 8.74 0 0 0 0 13.8z"/>
    </svg>
  </symbol>
  <symbol id="svg-menu" viewBox="0 0 24 24">
    <title>Menu</title>
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-menu">
      <line x1="3" y1="12" x2="21" y2="12"></line>
      <line x1="3" y1="6" x2="21" y2="6"></line>
      <line x1="3" y1="18" x2="21" y2="18"></line>
    </svg>
  </symbol>
  <symbol id="svg-arrow-right" viewBox="0 0 24 24">
    <title>Expand</title>
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather-chevron-right">
      <polyline points="9 18 15 12 9 6"></polyline>
    </svg>
  </symbol>
  <symbol id="svg-sun" viewBox="0 0 24 24">
    <title>Light mode</title>
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="feather-sun">
      <circle cx="12" cy="12" r="5"></circle>
      <line x1="12" y1="1" x2="12" y2="3"></line>
      <line x1="12" y1="21" x2="12" y2="23"></line>
      <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
      <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
      <line x1="1" y1="12" x2="3" y2="12"></line>
      <line x1="21" y1="12" x2="23" y2="12"></line>
      <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
      <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
    </svg>
  </symbol>
  <symbol id="svg-moon" viewBox="0 0 24 24">
    <title>Dark mode</title>
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-moon">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" />
      <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" />
    </svg>
  </symbol>
  <symbol id="svg-sun-with-moon" viewBox="0 0 24 24">
    <title>Auto light/dark, in light mode</title>
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
      class="icon-custom-derived-from-feather-sun-and-tabler-moon">
      <path style="opacity: 50%" d="M 5.411 14.504 C 5.471 14.504 5.532 14.504 5.591 14.504 C 3.639 16.319 4.383 19.569 6.931 20.352 C 7.693 20.586 8.512 20.551 9.25 20.252 C 8.023 23.207 4.056 23.725 2.11 21.184 C 0.166 18.642 1.702 14.949 4.874 14.536 C 5.051 14.512 5.231 14.5 5.411 14.5 L 5.411 14.504 Z"/>
      <line x1="14.5" y1="3.25" x2="14.5" y2="1.25"/>
      <line x1="14.5" y1="15.85" x2="14.5" y2="17.85"/>
      <line x1="10.044" y1="5.094" x2="8.63" y2="3.68"/>
      <line x1="19" y1="14.05" x2="20.414" y2="15.464"/>
      <line x1="8.2" y1="9.55" x2="6.2" y2="9.55"/>
      <line x1="20.8" y1="9.55" x2="22.8" y2="9.55"/>
      <line x1="10.044" y1="14.006" x2="8.63" y2="15.42"/>
      <line x1="19" y1="5.05" x2="20.414" y2="3.636"/>
      <circle cx="14.5" cy="9.55" r="3.6"/>
    </svg>
  </symbol>
  <symbol id="svg-moon-with-sun" viewBox="0 0 24 24">
    <title>Auto light/dark, in dark mode</title>
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="1" stroke-linecap="round" stroke-linejoin="round"
      class="icon-custom-derived-from-feather-sun-and-tabler-moon">
      <path d="M 8.282 7.007 C 8.385 7.007 8.494 7.007 8.595 7.007 C 5.18 10.184 6.481 15.869 10.942 17.24 C 12.275 17.648 13.706 17.589 15 17.066 C 12.851 22.236 5.91 23.143 2.505 18.696 C -0.897 14.249 1.791 7.786 7.342 7.063 C 7.652 7.021 7.965 7 8.282 7 L 8.282 7.007 Z"/>
      <line style="opacity: 50%" x1="18" y1="3.705" x2="18" y2="2.5"/>
      <line style="opacity: 50%" x1="18" y1="11.295" x2="18" y2="12.5"/>
      <line style="opacity: 50%" x1="15.316" y1="4.816" x2="14.464" y2="3.964"/>
      <line style="opacity: 50%" x1="20.711" y1="10.212" x2="21.563" y2="11.063"/>
      <line style="opacity: 50%" x1="14.205" y1="7.5" x2="13.001" y2="7.5"/>
      <line style="opacity: 50%" x1="21.795" y1="7.5" x2="23" y2="7.5"/>
      <line style="opacity: 50%" x1="15.316" y1="10.184" x2="14.464" y2="11.036"/>
      <line style="opacity: 50%" x1="20.711" y1="4.789" x2="21.563" y2="3.937"/>
      <circle style="opacity: 50%" cx="18" cy="7.5" r="2.169"/>
    </svg>
  </symbol>
  <symbol id="svg-pencil" viewBox="0 0 24 24">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-pencil-code">
      <path d="M4 20h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4" />
      <path d="M13.5 6.5l4 4" />
      <path d="M20 21l2 -2l-2 -2" />
      <path d="M17 17l-2 2l2 2" />
    </svg>
  </symbol>
  <symbol id="svg-eye" viewBox="0 0 24 24">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
      stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="icon-tabler-eye-code">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" />
      <path d="M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
      <path
        d="M11.11 17.958c-3.209 -.307 -5.91 -2.293 -8.11 -5.958c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6c-.21 .352 -.427 .688 -.647 1.008" />
      <path d="M20 21l2 -2l-2 -2" />
      <path d="M17 17l-2 2l2 2" />
    </svg>
  </symbol>
</svg>

<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
<label class="overlay sidebar-overlay" for="__navigation">
  <div class="visually-hidden">Hide navigation sidebar</div>
</label>
<label class="overlay toc-overlay" for="__toc">
  <div class="visually-hidden">Hide table of contents sidebar</div>
</label>

<a class="skip-to-content muted-link" href="#furo-main-content">Skip to content</a>



<div class="page">
  <header class="mobile-header">
    <div class="header-left">
      <label class="nav-overlay-icon" for="__navigation">
        <div class="visually-hidden">Toggle site navigation sidebar</div>
        <i class="icon"><svg><use href="#svg-menu"></use></svg></i>
      </label>
    </div>
    <div class="header-center">
      <a href="index.html"><div class="brand">TikTokLive v6.6.5</div></a>
    </div>
    <div class="header-right">
      <div class="theme-toggle-container theme-toggle-header">
        <button class="theme-toggle">
          <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
          <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
          <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
          <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
          <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
        </button>
      </div>
      <label class="toc-overlay-icon toc-header-icon" for="__toc">
        <div class="visually-hidden">Toggle table of contents sidebar</div>
        <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
      </label>
    </div>
  </header>
  <aside class="sidebar-drawer">
    <div class="sidebar-container">
      
      <div class="sidebar-sticky"><a class="sidebar-brand" href="index.html">
  
  <div class="sidebar-logo-container">
    <img class="sidebar-logo" src="_static/logo.png" alt="Logo"/>
  </div>
  
  <span class="sidebar-brand-text">TikTokLive v6.6.5</span>
  
</a><form class="sidebar-search-container" method="get" action="search.html" role="search">
  <input class="sidebar-search" placeholder="Search" name="q" aria-label="Search">
  <input type="hidden" name="check_keywords" value="yes">
  <input type="hidden" name="area" value="default">
</form>
<div id="searchbox"></div><div class="sidebar-scroll"><div class="sidebar-tree">
  <ul class="current">
<li class="toctree-l1 current has-children"><a class="reference internal" href="TikTokLive.html">TikTokLive package</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" role="switch" type="checkbox"/><label for="toctree-checkbox-1"><div class="visually-hidden">Toggle navigation of TikTokLive package</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l2 current has-children"><a class="reference internal" href="TikTokLive.client.html">TikTokLive.client package</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" role="switch" type="checkbox"/><label for="toctree-checkbox-2"><div class="visually-hidden">Toggle navigation of TikTokLive.client package</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul class="current">
<li class="toctree-l3 has-children"><a class="reference internal" href="TikTokLive.client.web.html">TikTokLive.client.web package</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" role="switch" type="checkbox"/><label for="toctree-checkbox-3"><div class="visually-hidden">Toggle navigation of TikTokLive.client.web package</div><i class="icon"><svg><use href="#svg-arrow-right"></use></svg></i></label><ul>
<li class="toctree-l4"><a class="reference internal" href="TikTokLive.client.web.routes.html">TikTokLive.client.web.routes package</a></li>
</ul>
</li>
<li class="toctree-l3 current current-page"><a class="current reference internal" href="#">TikTokLive.client.ws package</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="TikTokLive.events.html">TikTokLive.events package</a></li>
<li class="toctree-l2"><a class="reference internal" href="TikTokLive.proto.html">TikTokLive.proto package</a></li>
</ul>
</li>
</ul>

</div>
</div>

      </div>
      
    </div>
  </aside>
  <div class="main">
    <div class="content">
      <div class="article-container">
        <a href="#" class="back-to-top muted-link">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
            <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
          </svg>
          <span>Back to top</span>
        </a>
        <div class="content-icon-container">
          <div class="view-this-page">
  <a class="muted-link" href="_sources/TikTokLive.client.ws.rst.txt" title="View this page">
    <svg><use href="#svg-eye"></use></svg>
    <span class="visually-hidden">View this page</span>
  </a>
</div>
<div class="theme-toggle-container theme-toggle-content">
            <button class="theme-toggle">
              <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
              <svg class="theme-icon-when-auto-light"><use href="#svg-sun-with-moon"></use></svg>
              <svg class="theme-icon-when-auto-dark"><use href="#svg-moon-with-sun"></use></svg>
              <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
              <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
            </button>
          </div>
          <label class="toc-overlay-icon toc-content-icon" for="__toc">
            <div class="visually-hidden">Toggle table of contents sidebar</div>
            <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
          </label>
        </div>
        <article role="main" id="furo-main-content">
          <section id="tiktoklive-client-ws-package">
<h1>TikTokLive.client.ws package<a class="headerlink" href="#tiktoklive-client-ws-package" title="Link to this heading"></a></h1>
<section id="submodules">
<h2>Submodules<a class="headerlink" href="#submodules" title="Link to this heading"></a></h2>
</section>
<section id="module-TikTokLive.client.ws.ws_client">
<span id="tiktoklive-client-ws-ws-client-module"></span><h2>TikTokLive.client.ws.ws_client module<a class="headerlink" href="#module-TikTokLive.client.ws.ws_client" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_client.</span></span><span class="sig-name descname"><span class="pre">WebcastWSClient</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">ws_kwargs</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">ws_proxy</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Proxy</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">AsyncioProxy</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<p>Websocket client responsible for connections to TikTok</p>
<dl class="py attribute">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.DEFAULT_PING_INTERVAL">
<span class="sig-name descname"><span class="pre">DEFAULT_PING_INTERVAL</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">float</span></em><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">5.0</span></em><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.DEFAULT_PING_INTERVAL" title="Link to this definition"></a></dt>
<dd></dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.connect">
<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">connect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">room_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cookies</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Cookies</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">user_agent</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">initial_webcast_response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult" title="TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult"><span class="pre">ProtoMessageFetchResult</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">process_connect_events</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">compress_ws_events</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">AsyncIterator</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult" title="TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult"><span class="pre">ProtoMessageFetchResult</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.connect" title="Link to this definition"></a></dt>
<dd><p>Connect to the Webcast server &amp; iterate over response messages.</p>
<p>— Message 1 —</p>
<p>The iterator exits normally when the connection is closed with close code
1000 (OK) or 1001 (going away) or without a close code. It raises
a <code class="xref py py-exc docutils literal notranslate"><span class="pre">ConnectionClosedError</span></code> when the connection
is closed with any other code.</p>
<p>— Message 2 —</p>
<p>DEVELOP SANITY NOTE:</p>
<p>When ping_timeout is set (i.e. not None), the client waits for a pong for N seconds.
TikTok DO NOT SEND pongs back. Unfortunately the websockets client after N seconds assumes the server is dead.
It then throws the following infamous exception:</p>
<p>websockets.exceptions.ConnectionClosedError: sent 1011 (unexpected error) keepalive ping timeout; no close frame received</p>
<p>If you set ping_timeout to None, it doesn’t wait for a pong. Perfect, since TikTok don’t send them.</p>
<p>— Parameters –</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>initial_webcast_response</strong> – The Initial ProtoMessageFetchResult from the sign server - NOT a PushFrame</p></li>
<li><p><strong>room_id</strong> – The room ID to connect to</p></li>
<li><p><strong>user_agent</strong> – The user agent to pass to the WebSocket connection</p></li>
<li><p><strong>cookies</strong> – The cookies to pass to the WebSocket connection</p></li>
<li><p><strong>process_connect_events</strong> – Whether to process the initial events sent in the first fetch</p></li>
<li><p><strong>compress_ws_events</strong> – Whether to ask TikTok to gzip the WebSocket events</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Yields ProtoMessageFetchResultMessage, the messages within ProtoMessageFetchResult.messages</p>
</dd>
</dl>
</dd></dl>

<dl class="py property">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.connected">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">connected</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">bool</span></em><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.connected" title="Link to this definition"></a></dt>
<dd><p>Check if the WebSocket is open</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>WebSocket status</p>
</dd>
</dl>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.disconnect">
<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">disconnect</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.disconnect" title="Link to this definition"></a></dt>
<dd><p>Request to stop the websocket connection &amp; wait
:return: None</p>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.get_ws_cookie_string">
<span class="sig-name descname"><span class="pre">get_ws_cookie_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">cookies</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Cookies</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.get_ws_cookie_string" title="Link to this definition"></a></dt>
<dd><p>Get the cookie string for the WebSocket connection.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>cookies</strong> – Cookies to pass to the WebSocket connection</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>Cookie string</p>
</dd>
</dl>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.restart_ping_loop">
<span class="sig-name descname"><span class="pre">restart_ping_loop</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">room_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.restart_ping_loop" title="Link to this definition"></a></dt>
<dd><p>Restart the WebSocket ping loop</p>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.send">
<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">send</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">message</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bytes</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Message</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.send" title="Link to this definition"></a></dt>
<dd><p>Send a message to the WebSocket</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>message</strong> – Message to send to the WebSocket connection</p>
</dd>
</dl>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.send_ack">
<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">send_ack</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">webcast_response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult" title="TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult"><span class="pre">ProtoMessageFetchResult</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">webcast_push_frame</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.custom_extras.WebcastPushFrame" title="TikTokLive.proto.custom_extras.WebcastPushFrame"><span class="pre">WebcastPushFrame</span></a></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.send_ack" title="Link to this definition"></a></dt>
<dd><p>Acknowledge the receipt of a ProtoMessageFetchResult message from TikTok, if necessary</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>webcast_response</strong> – The ProtoMessageFetchResult to acknowledge</p></li>
<li><p><strong>webcast_push_frame</strong> – The WebcastPushFrame containing the ProtoMessageFetchResult</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>None</p>
</dd>
</dl>
</dd></dl>

<dl class="py method">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.switch_rooms">
<em class="property"><span class="pre">async</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">switch_rooms</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">room_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.switch_rooms" title="Link to this definition"></a></dt>
<dd></dd></dl>

<dl class="py property">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_client.WebcastWSClient.ws">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ws</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">WebSocketClientProtocol</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.ws" title="Link to this definition"></a></dt>
<dd><p>Get the current WebSocketClientProtocol</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>WebSocketClientProtocol</p>
</dd>
</dl>
</dd></dl>

</dd></dl>

</section>
<section id="module-TikTokLive.client.ws.ws_connect">
<span id="tiktoklive-client-ws-ws-connect-module"></span><h2>TikTokLive.client.ws.ws_connect module<a class="headerlink" href="#module-TikTokLive.client.ws.ws_connect" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_connect.WebcastConnect">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_connect.</span></span><span class="sig-name descname"><span class="pre">WebcastConnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_webcast_response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult" title="TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult"><span class="pre">ProtoMessageFetchResult</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">logger</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Logger</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_uri_params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_uri_append_str</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">uri</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#TikTokLive.client.ws.ws_connect.WebcastConnect" title="Link to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">Connect</span></code></p>
<dl class="py property">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_connect.WebcastConnect.ws">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ws</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">WebSocketClientProtocol</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#TikTokLive.client.ws.ws_connect.WebcastConnect.ws" title="Link to this definition"></a></dt>
<dd><p>Get the current WebSocketClientProtocol</p>
</dd></dl>

<dl class="py property">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_connect.WebcastConnect.ws_options">
<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">ws_options</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#TikTokLive.client.ws.ws_connect.WebcastConnect.ws_options" title="Link to this definition"></a></dt>
<dd><p>Get the WebSocket options as returned via the Handshake-Options header</p>
</dd></dl>

</dd></dl>

<dl class="py data">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_connect.WebcastProxy">
<span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_connect.</span></span><span class="sig-name descname"><span class="pre">WebcastProxy</span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_connect.WebcastProxy" title="Link to this definition"></a></dt>
<dd><p>Type hint for a WebcastIterator, which yields a tuple of WebcastPushFrame and ProtoMessageFetchResult.
WebcastPushFrame is Optional because the first yielded item is from the initial response
which is from /im/fetch (from the sign server), so it is not encapsulated by a WebcastPushFrame.</p>
<p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">Proxy</span></code> | <code class="xref py py-class docutils literal notranslate"><span class="pre">AsyncioProxy</span></code></p>
</dd></dl>

<dl class="py class">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_connect.WebcastProxyConnect">
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_connect.</span></span><span class="sig-name descname"><span class="pre">WebcastProxyConnect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">proxy</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Proxy</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">AsyncioProxy</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#TikTokLive.client.ws.ws_connect.WebcastProxyConnect" title="Link to this definition"></a></dt>
<dd><p>Bases: <a class="reference internal" href="#TikTokLive.client.ws.ws_connect.WebcastConnect" title="TikTokLive.client.ws.ws_connect.WebcastConnect"><code class="xref py py-class docutils literal notranslate"><span class="pre">WebcastConnect</span></code></a>, <code class="xref py py-class docutils literal notranslate"><span class="pre">ProxyConnect</span></code></p>
<p>Add Proxy support to the WebcastConnect class</p>
</dd></dl>

</section>
<section id="module-TikTokLive.client.ws.ws_utils">
<span id="tiktoklive-client-ws-ws-utils-module"></span><h2>TikTokLive.client.ws.ws_utils module<a class="headerlink" href="#module-TikTokLive.client.ws.ws_utils" title="Link to this heading"></a></h2>
<dl class="py function">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_utils.build_webcast_uri">
<span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_utils.</span></span><span class="sig-name descname"><span class="pre">build_webcast_uri</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">initial_webcast_response</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult" title="TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult"><span class="pre">ProtoMessageFetchResult</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_uri_params</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">base_uri_append_str</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">str</span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_utils.build_webcast_uri" title="Link to this definition"></a></dt>
<dd><p>Build a webcast URI from a base URI and parameters. This method will format the base URI
with the parameters and return the formatted URI.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>initial_webcast_response</strong> – The initial Webcast response</p></li>
<li><p><strong>base_uri_params</strong> – Parameters to format the URI with</p></li>
<li><p><strong>base_uri_append_str</strong> – String to append to the base URI</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>str The formatted URI</p>
</dd>
</dl>
</dd></dl>

<dl class="py function">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_utils.extract_webcast_push_frame">
<span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_utils.</span></span><span class="sig-name descname"><span class="pre">extract_webcast_push_frame</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data:</span> <span class="pre">bytes</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">logger:</span> <span class="pre">~logging.Logger</span> <span class="pre">=</span> <span class="pre">&lt;Logger</span> <span class="pre">TikTokLive</span> <span class="pre">(WARNING)&gt;</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.custom_extras.WebcastPushFrame" title="TikTokLive.proto.custom_extras.WebcastPushFrame"><span class="pre">WebcastPushFrame</span></a></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_utils.extract_webcast_push_frame" title="Link to this definition"></a></dt>
<dd><p>Extract a WebcastPushFrame from a raw byte payload. This method will parse the payload
and return a WebcastPushFrame object. This method is useful for extracting push frames
from a WebSocket connection.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> – Raw byte payload to extract from</p></li>
<li><p><strong>logger</strong> – Logger to use for logging</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>WebcastPushFrame The extracted push frame</p>
</dd>
</dl>
</dd></dl>

<dl class="py function">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_utils.extract_webcast_response_message">
<span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_utils.</span></span><span class="sig-name descname"><span class="pre">extract_webcast_response_message</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">push_frame:</span> <span class="pre">~TikTokLive.proto.custom_extras.WebcastPushFrame</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">logger:</span> <span class="pre">~logging.Logger</span> <span class="pre">=</span> <span class="pre">&lt;Logger</span> <span class="pre">TikTokLive</span> <span class="pre">(WARNING)&gt;</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><a class="reference internal" href="TikTokLive.proto.html#TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult" title="TikTokLive.proto.tiktok_proto.ProtoMessageFetchResult"><span class="pre">ProtoMessageFetchResult</span></a></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_utils.extract_webcast_response_message" title="Link to this definition"></a></dt>
<dd><p>Extract the ProtoMessageFetchResult from a push frame. If compression is enabled on the WebSocket,
then messages will come gzipped. This method will decompress the payload if necessary.
The gzip format allows for less bandwidth usage, at the cost of a slight CPU increase for message decompression.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>push_frame</strong> – Push frame to extract from</p></li>
<li><p><strong>logger</strong> – Logger to use for logging</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>ProtoMessageFetchResult The extracted response</p>
</dd>
</dl>
</dd></dl>

<dl class="py function">
<dt class="sig sig-object py" id="TikTokLive.client.ws.ws_utils.extract_websocket_options">
<span class="sig-prename descclassname"><span class="pre">TikTokLive.client.ws.ws_utils.</span></span><span class="sig-name descname"><span class="pre">extract_websocket_options</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">headers</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#TikTokLive.client.ws.ws_utils.extract_websocket_options" title="Link to this definition"></a></dt>
<dd><p>Options are a cookie-style string, so we parse with SimpleCookie from the stdlib</p>
</dd></dl>

</section>
<section id="module-TikTokLive.client.ws">
<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-TikTokLive.client.ws" title="Link to this heading"></a></h2>
</section>
</section>

        </article>
      </div>
      <footer>
        
        <div class="related-pages">
          <a class="next-page" href="TikTokLive.events.html">
              <div class="page-info">
                <div class="context">
                  <span>Next</span>
                </div>
                <div class="title">TikTokLive.events package</div>
              </div>
              <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
            </a>
          <a class="prev-page" href="TikTokLive.client.web.routes.html">
              <svg class="furo-related-icon"><use href="#svg-arrow-right"></use></svg>
              <div class="page-info">
                <div class="context">
                  <span>Previous</span>
                </div>
                
                <div class="title">TikTokLive.client.web.routes package</div>
                
              </div>
            </a>
        </div>
        <div class="bottom-of-page">
          <div class="left-details">
            <div class="copyright">
                Copyright &#169; 2022, Isaac Kogan
            </div>
            Made with <a href="https://www.sphinx-doc.org/">Sphinx</a> and <a class="muted-link" href="https://pradyunsg.me">@pradyunsg</a>'s
            
            <a href="https://github.com/pradyunsg/furo">Furo</a>
            
          </div>
          <div class="right-details">
            
          </div>
        </div>
        
      </footer>
    </div>
    <aside class="toc-drawer">
      
      
      <div class="toc-sticky toc-scroll">
        <div class="toc-title-container">
          <span class="toc-title">
            On this page
          </span>
        </div>
        <div class="toc-tree-container">
          <div class="toc-tree">
            <ul>
<li><a class="reference internal" href="#">TikTokLive.client.ws package</a><ul>
<li><a class="reference internal" href="#submodules">Submodules</a></li>
<li><a class="reference internal" href="#module-TikTokLive.client.ws.ws_client">TikTokLive.client.ws.ws_client module</a><ul>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient</span></code></a><ul>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.DEFAULT_PING_INTERVAL"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.DEFAULT_PING_INTERVAL</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.connect"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.connect()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.connected"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.connected</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.disconnect"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.disconnect()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.get_ws_cookie_string"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.get_ws_cookie_string()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.restart_ping_loop"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.restart_ping_loop()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.send"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.send()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.send_ack"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.send_ack()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.switch_rooms"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.switch_rooms()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_client.WebcastWSClient.ws"><code class="docutils literal notranslate"><span class="pre">WebcastWSClient.ws</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#module-TikTokLive.client.ws.ws_connect">TikTokLive.client.ws.ws_connect module</a><ul>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_connect.WebcastConnect"><code class="docutils literal notranslate"><span class="pre">WebcastConnect</span></code></a><ul>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_connect.WebcastConnect.ws"><code class="docutils literal notranslate"><span class="pre">WebcastConnect.ws</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_connect.WebcastConnect.ws_options"><code class="docutils literal notranslate"><span class="pre">WebcastConnect.ws_options</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_connect.WebcastProxy"><code class="docutils literal notranslate"><span class="pre">WebcastProxy</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_connect.WebcastProxyConnect"><code class="docutils literal notranslate"><span class="pre">WebcastProxyConnect</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#module-TikTokLive.client.ws.ws_utils">TikTokLive.client.ws.ws_utils module</a><ul>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_utils.build_webcast_uri"><code class="docutils literal notranslate"><span class="pre">build_webcast_uri()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_utils.extract_webcast_push_frame"><code class="docutils literal notranslate"><span class="pre">extract_webcast_push_frame()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_utils.extract_webcast_response_message"><code class="docutils literal notranslate"><span class="pre">extract_webcast_response_message()</span></code></a></li>
<li><a class="reference internal" href="#TikTokLive.client.ws.ws_utils.extract_websocket_options"><code class="docutils literal notranslate"><span class="pre">extract_websocket_options()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#module-TikTokLive.client.ws">Module contents</a></li>
</ul>
</li>
</ul>

          </div>
        </div>
      </div>
      
      
    </aside>
  </div>
</div><script src="_static/jquery.js?v=5d32c60e"></script>
    <script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
    <script src="_static/documentation_options.js?v=5929fcd5"></script>
    <script src="_static/doctools.js?v=9a2dae69"></script>
    <script src="_static/sphinx_highlight.js?v=dc90522c"></script>
    <script src="_static/scripts/furo.js?v=5fa4622c"></script>
    <script src="_static/js/rtd_search_config.js?v=b0596c34"></script>
    <script src="_static/js/rtd_sphinx_search.min.js?v=5e065386"></script>
    </body>
</html>